package com.zero.ava.service;

public interface Node {

	/**
	 * 节点负载情况
	 */
	public enum Health {

		/**
		 * 无负荷状态（25%）
		 */
		GREEN,

		/**
		 * 正常工作状态（50%）
		 */
		YELLOW,

		/**
		 * 负荷状态（75%）
		 */
		ORANGE,

		/**
		 * 严重负荷（节点可能已不能运行或宕机）
		 */
		RED;

		public boolean worseThan(Health health) {
			return compareTo(health) > 0;
		}

		/**
		 * 节点是否工作
		 * 
		 * @return
		 */
		public boolean isAlive() {
			return !equals(Health.RED);
		}
	}

	long getId();

	String getHostName();

	boolean isAlive();

 	Health getHealth();

}
